﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows;

namespace ShellAnywhere.Model
{
	using IActionToken = IToken<IAction>;

	public enum Posture : int
	{
		Undef = -1,
		Hidden,
		Launch,
		Shell,
		Navigation
	}

	public interface IShellAnywhereModel
	{
		#region props
		HistoryMgr HistoryMgr { get; }
		Posture Posture { get; set; }
		IActionMgr ActionMgr { get; }
		#endregion props

		#region methods
		void PostureChanged(Posture posture);
		void OnStdOutReceived(string line);
		void OnStdErrReceived(string line);
		void Init();
		void End();
		#endregion methods

		#region events
		event Action<int, IAction[], int> ActionsChanged;
		event Action<Brush, string> OutputAppend;
		#endregion events		
	}
}
